package com.example.gbasedemo.mapper;

import com.baomidou.mybatisplus.annotation.*;
import lombok.*;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * <p>
 * 对接电网管理平台
 * </p>
 *
 * @author
 * @since 2023-08-04
 */
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName("TB_PATROL_DW_PLAN")
public class PatrolDwPlan implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(value = "key_id", type = IdType.INPUT)
    private String keyId;

    /**
     * 生产计划ID
     */
    private String id;

    private String prodPlanId;

    /**
     * 计划CODE
     */
    private String planCode;

    /**
     * 计划类型(1:年计划 2:月计划 3:周计划)
     */
    private String planType;

    /**
     * 计划性质(1:生产类 2:非生产类)
     */
    private String planNature;

    /**
     * 工作内容--按照局平台的预案（携带预案名称）
     */
    private String jobContent;

    /**
     * 工作类型(1:预试 2:定检 3:巡视 4:检修 5:维护 6:消缺 7:操作 8:验收 9:安装、更换作业 10:测量 11:带电 12:工器具试验 13:配合(生产) 14:其他(生产) 101:班务管理 102:技术培训 103:作业管理 104:图纸资料管理 105:安全活动 106:工器具管理 107:绩效管理 108:配合(非生产) 109:其它(非生产))
     */
    private String workType;

    /**
     * 工作班组ID
     */
    private String workTeamOid;

    /**
     * 工作班组CODE
     */
    private String workTeamOcode;

    /**
     * 工作班组名称
     */
    private String workTeamOname;

    /**
     * 计划开始时间
     */
    private String planBeginTime;

    /**
     * 计划结束时间
     */
    private String planEndTime;

    /**
     * 工作地点名称集合
     */
    private String workSiteNames;
    private String workSiteIds;

    /**
     * 工作方式(1:停电 2:不停电)
     */
    private String working;

    /**
     * 计划状态(10:新增 20:审批中 30:待发布 40:已发布(未派工) 50:执行中 60:待确认 70:已完成 80:变更中 90:已取消 100:待月度发布)
     */
    private String planState;

    @TableField(exist = false)
    private List<String> planStates;

    /**
     * 计划来源类型
     */
    private String planSourceType;

    /**
     * 专业(1:高压专业 2:化学专业 3:继保专业 4:自动化专业 5:通信专业 6:直流专业 7:电测专业 8:安自专业 9:热工仪表专业 10:变电运行 11:输电线路 12:输电电缆 13:带电专业 14:检修专业 15:配电专业 16:计量专业 17:站用电源)
     */
    private String speciality;

    /**
     * 工作类别细类(1:全检 2:部检 3:新投产 6:首检 4:补充检验 5:保护升级后补充检验 7:状态检验 101:日常巡视 102:特殊巡视 103:夜间巡视 104:监察性巡视 105:专业巡视 106:故障巡视 11:A修 12:B1修 13:B2修 14:设备定期轮换试验)
     */
    private String workSmallType;

    private String workSmallTypeName;

    /**
     * 电网类型(1:主网 2:配网)
     */
    private String powerGridFlag;

    /**
     * 创建人ID
     */
    private String creatorUid;

    /**
     * 创建人名称
     */
    private String creatorUname;

    /**
     * 创建时间
     */
    private String dwCreateTime;
    private String dwUpdateTime;

    /**
     * 工作负责人ID
     */
    private String workMasterUid;

    /**
     * 工作负责人名称
     */
    private String workMasterUname;

    /**
     * 工作成员名称集合
     */
    private String workMemberUnames;

    /**
     * 实际开始时间
     */
    private String realBeginTime;

    /**
     * 实际结束时间
     */
    private String realEndTime;

    /**
     * 工作结果
     */
    private String workResult;

    /**
     * 基准电压等级ID
     */
    private String baseVoltageId;

    /**
     * 工作部门ID
     */
    private String workDeptOid;

    /**
     * 工作部门名称
     */
    private String workDeptOname;

    /**
     * 巡视方式(0:常规人巡、2:机巡【多旋翼】、5:机巡【固定翼、直升机】、4:机器人巡视、6-视频 、 7-联合巡视)
     */
    private String patrolMode;

    /**
     * 局编码
     */
    private String bureauCode;

    /**
     * 省编码
     */
    private String provinceCode;

    /**
     * 工作流状态(0:未上报 1:审批中 2:已审批)
     */
    private String flowState;


    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;


    @TableField(exist = false)
    private String stationName;

    @TableField(exist = false)
    private String planId;

    @TableField(exist = false)
    private String planIds;

    @TableField(exist = false)
    private String uploadResult;

    @TableField(exist = false)
    private String planName;

    //执行方式  0自动 1手动
    @TableField(exist = false)
    private Integer executeCode;

    @TableField(exist = false)
    private Date fixedStartTime;

    //巡视远程方式  0-AI巡视 1-远程巡视
    @TableField(exist = false)
    private Integer patrolType;

    /**
     * 巡视间隔 单位/s
     */
    @TableField(exist = false)
    private Integer patrolCruise;

    /**
     * 分屏数量 单位/个 1、4、9、16
     */
    @TableField(exist = false)
    private Integer screenCount;



    /**
     * 是否已更新 0-否 1-是
     */
    private Integer isSync;


//    @TableField(exist = false)
//    private List<DwRealPlanRes> dwRealPlanResList;

    @TableField(exist = false)
    private String stationNameSearch;

    @TableField(exist = false)
    private String treeKeyId;



    /**
     * 创建开始时间
     */
    @TableField(exist = false)
    private String createBeginTime;

    /**
     * 创建结束时间
     */
    @TableField(exist = false)
    private String createEndTime;

    @TableField(exist = false)
    private String dwPlanId;



    // 是否上送结果成功  1-成功
    @TableField(exist = false)
    private Integer isUpload;

    // 是否上送结果成功  1-成功
    @TableField(exist = false)
    private String isUploadName;

    //主表的电网编码
    @TableField(exist = false)
    private String siteId;


    /**
     * 预案任务状态,对应task表的状态  -1.数据异常 0.正在执行 1.执行完成 2.任务暂停 3.任务终止 4.等待执行 5. 任务超期
     */
    @TableField(exist = false)
    private Integer cstate;

    @TableField(exist = false)
    private String stationId;

    @TableField(exist = false)
    private String planTaskId;
}
